1

Grundlegendes zu avenue.quark

Die Verwendung des Webs für die Veröffentlichung von Dokumenten im QuarkXPress Passport™ Format ist ein weit verbreiteter Wunsch, der auf vielfältige Weise erfüllt werden kann. Der effizienteste Weg besteht jedoch darin, den Inhalt solcher QuarkXPress Passport Dokumente von den Dokumenten selbst zu trennen und in einem strukturierten Format, wie z. B. XML, zu speichern. Der Inhalt kann dann nicht nur für die Veröffentlichung im Web, sondern auch in anderen Formaten ­ wie z. B. gedruckt oder auf CD-ROM ­ wieder verwendet werden.

Die avenue.quark™ Software macht es Ihnen leicht, den Inhalt aus QuarkXPress Passport Dokumenten zu extrahieren und im XML-Format zu speichern.


Einleitung zu XML

Mit Avenue.quark können Sie den Inhalt aus QuarkXPress Passport Dokumenten extrahieren und im XML-Format speichern. Der Inhalt lässt sich anschließend auf einfache Weise für Veröffentlichungen im Web, auf CD-ROM oder in gedruckter Form wieder verwenden. In diesem Abschnitt werden die einzelnen Abläufe und Definitionen kurz angesprochen. Weiterführende Informationen finden Sie in den folgenden Abschnitten.


Was versteht man unter Inhalt?

Der Inhalt umfasst all die Informationen, die Ihrem Dokument einen gewissen Wert verleihen. Zum Inhalt einer Zeitschrift zählen beispielsweise Artikel, Fotos, Interviews und Schaubilder.

Der Inhalt kann auch über das definiert werden, was er nicht ist. Kopf- und Fußzeilen oder der Hinweis "Fortsetzung auf Seite x" werden normalerweise nicht zum Inhalt einer Zeitschrift gerechnet, sondern definieren die Präsentation der Zeitschrift, d. h. es handelt sich um Aspekte, die nur dann wichtig werden, wenn die Zeitschrift in gedruckter Form präsentiert wird. Die Darstellung kann sich je nach dem Medium der Veröffentlichung ändern, während der Inhalt in der Regel der gleiche bleibt.

Die Avenue.quark Software ermöglicht die Trennung des Inhalts von der Präsentation, indem sie den Inhalt aus dem jeweiligen QuarkXPress Passport Dokument extrahiert und im XML-Format speichert. Dieser Inhalt kann dann auf unterschiedliche Weise präsentiert werden ­ in gedruckter Form, im Web, auf CD-ROM usw. ­, wobei nur die Präsentation dem jeweiligen Darstellungsmedium angepasst werden muss.


Was ist XML?

XML steht für Extensible Markup Language. Mit XML können Sie die Struktur des Inhalts festlegen und die einzelnen Inhaltskomponenten auf sinnvolle Weise kennzeichnen.

Inhalt kennzeichnen

Warum muss der Inhalt gekennzeichnet werden? Für den Leser einer Zeitschrift ist eine Textzeile eindeutig als Überschrift erkennbar, der Computer kann eine solche Differenzierung jedoch nicht so einfach vornehmen. Damit der Computer eine bestimmte Textzeile als Überschrift erkennen kann, muss diese mit Hilfe von XML entsprechend markiert werden. Wenn der Computer diese Textzeile als Überschrift erkennt, kann er sie anschließend automatisch entsprechend formatieren.

Beim Markieren einer Inhaltskomponente im XML-Format setzen Sie diese, wie im Beispiel unten, zwischen ein Anfangs- und Endtag.

<Überschrift>Internet wächst um 400%</Überschrift>

In diesem Beispiel setzt sich das Anfangstag aus dem Namen eines Elements zwischen den Zeichen < bzw. > zusammen. Das Endtag ist bis auf den Schrägstrich /, der auf das Zeichen < folgt, mit dem Anfangstag identisch. In diesem Beispiel haben wir den Text "Internet wächst um 400%" als Überschrift markiert, indem wir ihn zwischen die Anfangs- und Endtags <Überschrift> setzen.

Struktur kennzeichnen

Nachrichtentext besteht normalerweise aus einer Überschrift und Autorenzeile, dem Haupttext sowie einigen Fotos oder Diagrammen mit Bildlegenden. Der Computer kann diese Elemente nur dann voneinander unterscheiden, wenn sie entsprechend gekennzeichnet sind.

XML ermöglicht die Beschreibung der Dokumentstruktur mit Hilfe von DTDs (Document Type Definitions). Die DTD gibt für die Informationen eines Dokuments bestimmte Tags und Strukturregeln vor. Die DTD für einen Nachrichtentext kann beispielsweise Folgendes festlegen:

Durch genaue Einhaltung der Regeln einer DTD können Organisationen sicherstellen, dass ihre Dokumente stets vorhersehbar und gleich bleibend strukturiert/formatiert sind, und damit Inhalte auf einfache Weise auf andere Medien übertragen ­ z. B. von der gedruckten Form in das Web und umgekehrt.

Avenue.quark erfordert die Verwendung von DTDs. Weitere Hinweise zur Erstellung und Anpassung von DTDs finden Sie unter "Mit DTDs arbeiten" und "Industriestandard-DTDs" in diesem Kapitel.


Ein "neutrales" Format

Bei XML handelt es sich um ein neutrales Format, d. h. es enthält keine Formatierungsinformationen und kann deshalb mit einer Vielzahl von Anwendungen eingesetzt werden, die u. U. verschiedene Formatierungen anwenden, abhängig davon, über welches Medium der Inhalt präsentiert wird.

Weitere Hinweise zu XML finden Sie unter "XML verstehen" in diesem Kapitel.



Was kann ich mit im XML-Format gespeicherten Inhalt anfangen?

Nach dem Extrahieren des Inhalts aus einem QuarkXPress Passport Dokument können Sie diesen auf verschiedene Weise verwenden. Sie können beispielsweise XML-getaggten Inhalt in das HTML-Format konvertieren und auf dem Web veröffentlichen. Diese Art der Konvertierung ist dem einfachen HTML-Export vorzuziehen, da sie ein einfaches Formatieren, Neuformatieren und Neuanordnen des Inhalts ermöglicht.


XML verstehen

Schauen wir uns nach diesem allgemeinen Überblick über die avenue.quark Software die einzelnen Komponenten einmal genauer an. Zunächst XML:

XML (Extensible Markup Language) ermöglicht die Festlegung der Dokumentstruktur und die Markierung bestimmter Inhaltskomponenten mit Tags. Die XML-Struktursteuerungen stellen sicher, dass alle erforderlichen Komponenten des Dokuments vorhanden sind und in der richtigen Reihenfolge erscheinen. Durch die Kennzeichnung des Inhalts kann dieser von anderen Anwendungen auf einfache Weise verwendet und angezeigt werden.

Bevor die Funktionsweise von XML im Detail aufgezeigt wird, hier zunächst einmal einige Gründe, warum XML überhaupt erforderlich ist:


Probleme, die mit XML gelöst werden

XML wurde aus einer älteren und komplizierteren Auszeichnungssprache, der SGML (Standard Generalized Markup Language), für die Lösung von Problemen entwickelt, die entweder ursprünglich mit SGML gelöst wurden oder die ganz eigen sind.

Informationen strukturieren und markieren

XML wird gelegentlich auch Metasprache genannt, da mit ihr anwenderdefinierte Auszeichnungssprachen für bestimmte Einsatzzwecke definiert werden können. Dies geschieht über die Erstellung von DTDs (Document Type Definitions). Die DTD legt fest, welche Informationen im Dokument enthalten sein und wie die einzelnen Dokumentkomponenten markiert oder "getaggt" sein sollen, in welcher Reihenfolge diese angeordnet werden, und wie viele für die jeweilige Inhaltskomponente zulässig sind. Ein Dokument ist nur dann "gültig", wenn es die Regeln der jeweiligen DTD erfüllt.

DTDs bestimmen die Struktur eines Dokuments. Wenn Sie die DTD eines Dokument kennen, wissen Sie, welche Art von Informationen in diesem Dokument enthalten sind. DTDs erleichtern dem Computer außerdem die Verarbeitung der Daten in XML-Dokumenten. Wenn ein Computer eine DTD "verstehen" kann, dann "versteht" er automatisch die Informationen in allen XML-Dokumenten, die dieser DTD entsprechen. Gemäß den Regeln der DTD eines Dokuments können Sie mit Hilfe eines Computerprogramms alle vorkommende Stellen mit bestimmten Informationen (wie z. B. dem Firmennamen) durchsuchen oder eine HTML-Seite erstellen, die alle diese Informationen aufführt (z. B. in einer Liste mit Firmennamen).

Spezial-DTDs wurden bereits für die Bereiche Chemie, Mathematik, technische Dokumentation, ja sogar für Belletristik entwickelt. Die Steuerung von Arbeitsabläufen, Softwarespezifikationen sowie alle Bereiche, die den Austausch strukturierter Informationen erfordern, gehören zu den möglichen Anwendungsbereichen.

Was außerdem noch erwähnenswert ist: Im Gegensatz zu SGML können Sie mit XML "wohlgeformte" Dokumente erstellen, d. h. Dokumente, die zwar die XML-Regeln einhalten, jedoch keiner bestimmten DTD entsprechen. Ohne Standard ist es allerdings schwierig, die Konsistenz der Dokumente sicherzustellen ­ deshalb erfordert avenue.quark die Verwendung von DTDs.


HTML verstehen

HTML hat sich als leistungsstarkes und vielseitiges Format für die Darstellung von Informationen im World Wide Web bewährt. HTML hat jedoch zwei wesentliche Nachteile: Es beschreibt lediglich die Formatierung von Daten, nicht deren Bedeutung, und es lässt die Erstellung neuer HTML-Tags nicht zu.

XML löst beide Probleme. Wenn Sie die Daten in einem XML-Dokument mit XML kennzeichnen, können Sie diese Kennzeichnungen bei der HTML-Formatierung berücksichtigen. Beispiel: Wenn Sie ein XML-Dokument mit Listen von Firmennamen und Informationen zu jeder dieser Firmen in eine HTML-Webseite umwandeln möchten, auf der jeder Firmenname fett gedruckt dargestellt wird, verwenden Sie ganz einfach einen XML-zu-HTML-Konverter und weisen ihn an, jede Zeile, die mit <Firmenname> markiert ist, fett gedruckt darzustellen. Sie müssen also nicht mehr durch die HTML-Seite gehen und jeden Firmennamen bzw. jede Firmenadresse manuell formatieren. Die Zeitersparnis bei der Website-Erstellung ist enorm.

Informationsaustausch

Da Computerprogramme generell von unterschiedlichsten Experten und Organisationen für die unterschiedlichsten Zwecke entwickelt werden, speichern sie diese Informationen in den unterschiedlichsten Formaten. Beispiel: Zwei grundlegend verschiedene Unternehmen speichern ihre Kundeninformationen möglicherweise in zwei total verschiedenen Formaten, obwohl die gespeicherten Kundeninformationen (Name, Adresse, Telefonnummer usw.) identisch sind.

XML löst dieses Problem durch Bereitstellung eines standardisierten und nichtproprietären Formats für die Übertragung von Informationen zwischen Anwendungen. XML wurde von Experten aus verschiedenen Industriebranchen, die im Rahmen des World Wide Web Consortium (W3C) zusammenarbeiten, entwickelt, verfeinert und genehmigt. Diese Spezifikation steht jedem zur Verfügung, der sie verwenden möchte (siehe www.w3.org/Consortium/Offices/Germany/uebersetzungen). Zahlreiche Organisationen und Industriebranchen nehmen sie bereits in Anspruch.

Wenn sich zwei Firmen darauf einigen, Software zu verwenden, die ihre Datensätze in das XML-Format mit einer gemeinsam festgelegten DTD konvertiert, können Sie diese Datensätze beliebig austauschen, ohne dabei Datenverlust auf Grund nichtkompatibler Formate zu riskieren. Weitere Hinweise zu DTDs und dem Austausch von Daten finden Sie unter "Industriestandard-DTDs" in diesem Abschnitt.

Weiterführende Informationen zu XML finden Sie unter "Mit XML arbeiten" in diesem Kapitel.


Mit XML arbeiten

Ein XML-Dokument enthält strukturierte Daten, die in "Elemente" aufgeschlüsselt werden, die wiederum anhand von XML-Tags beschrieben werden.


XML-Elemente und XML-Tags

Ein XLM-Element enthält Informationen, wie z. B. den Firmennamen, eine Überschrift oder eine Teilenummer. Zur Erstellung eines Elements setzen Sie die Informationen zwischen zwei XML-Tags: ein Anfangstag, das den Namen des Elements in spitzen Klammern enthält, und ein Endtag, das sich von dem Anfangstag lediglich durch einen Schrägstrich (/) vor dem Elementnamen unterscheidet. Ein mit Tags gekennzeichnetes Namen-Element kann folgendermaßen aussehen:

<Name>Gertrud</Name>

Sie sollten den Unterschied zwischen einem XML-Element und einem XML-Tag kennen. Bei einem XML-Tag handelt es sich lediglich um die Markierung, die der Information hinzugefügt wird, während ein XML-Element beides beinhaltet: die Information und die Tags, die diese Information umschließen.


Mit Hilfe von XML-Tags können Sie die von den Tags eingeschlossenen Informationen beschreiben und strukturieren. Im folgenden Beispiel ist der einleitende Absatz mit dem Tag <Einleitung> markiert:

<Einleitung>
Frank Lloyd Wright gehört zu den bekanntesten Architekten Amerikas. Hier seine Lebensgeschichte.
</Einleitung>

Innerhalb des Elements <Einleitung> können Sie weitere Unterelemente mit Tags markieren, um das Dokument noch weiter zu strukturieren.

<Einleitung>
<Name>Frank Lloyd Wright</Name> gehört zu den bekanntesten <Job>Architekten</Job> Amerikas. Hier seine Lebensgeschichte.
</Einleitung>

Die Syntax spielt bei XML-Tags eine wichtige Rolle. Im Gegensatz zu HTML-Tags unterscheiden XML-Tags zwischen Groß- und Kleinschreibung. Das Tag <Name> hat eine andere Bedeutung als das Tag <name> und unterscheidet sich außerdem vom Tag <NAME>. Jedes XML-Tag muss entweder mit einem Buchstaben oder einem Unterstrich (_) beginnen. Die darauf folgenden Zeichen können Buchstaben, Unterstriche, Zahlen, Bindestriche und Punkte sein. Leerzeichen und Tabulatorzeichen sind nicht zulässig. Beispiel: Der Name des XML-Tags <_.dir> ist zulässig, die Tags <_ dir> und <.dir> dagegen nicht. Das Tag <_ dir> ist nicht zulässig, da auf den Unterstrich ein Leer- oder Tabulatorzeichen folgt. Das Tag <.dir> ist nicht zulässig, da am Anfang ein Punkt und kein Unterstrich bzw. kein Buchstabe steht.


Der Unterschied zwischen "Elementen" und "Elementtypen" sollte Ihnen ebenfalls geläufig sein. Unter einem Elementtyp versteht man einen Tagnamen, der auf Daten angewendet wird. Elemente beinhalten Daten und die Tags, die diese Daten umschließen. Ein Dokument mit Namenslisten und Adressen hat möglicherweise nur die zwei Elementtypen <Name> und <Adresse>, jedoch Hunderte von Elementen, die von diesen Tags eingeschlossen sind.



XML-Attribute

Wenn Sie beispielsweise mit Elementen arbeiten, die mit den Tags <Auto> markiert sind, und zusätzliche Informationen über jedes von Ihnen erstellte Element <Auto> angeben möchten ­ wenn das Element <Auto> beispielsweise nicht nur als Auto, sondern als ein schnelles, rotes und teures Auto definiert werden soll ­ dann stehen Ihnen hierfür mehrere Möglichkeiten zur Verfügung:

Sie können entweder zusätzliche Elementtypen erstellen. Beispiel:

<Auto>
<Geschwindigkeit>schnell</Geschwindigkeit>
<Farbe>rot</Farbe>
<Kosten>teuer</Kosten>
1995 Opel Corsa
</Auto>

Oder ­ und das ist vielleicht der einfachere Weg ­ die XML-Funktion "Attribute" verwenden. Attribute stellen Informationen über ein Element bereit. Sie sind im Anfangstag des Elements enthalten, d. h. die Zuordnung zum jeweiligen Element ist eindeutig.

Ein Attribut besteht aus dem Attributnamen, gefolgt von einem Gleichheitszeichen und einem Attributwert in Anführungszeichen. Das Element unten verwendet drei Attribute, die die gleichen Informationen wie im Beispiel oben bereitstellen.

<Auto Geschwindigkeit="schnell" Farbe="rot" Kosten="teuer">
1995 Opel Corsa
</Auto>

Attribute sind aus folgenden Gründen sehr nützlich: Sie vereinfachen die Suche im Dokument und das Erstellen beispielsweise von Listen aller Elemente <Auto>, die den Wert "teuer" im Attribut für Kosten aufweisen. Sie sind auch nützlich bei der Verwendung leerer Elemente. Detaillierte Hinweise hierzu finden Sie im nächsten Abschnitt.


Leere Elemente

Leere Elemente enthalten Anfangs- und Endtags, die keine Daten einschließen:

<IDNummer></IDNummer>

Da leere Elemente keine Daten zwischen den Tags aufweisen, werden die Start- und Endtags wie folgt zusammengelegt:

<IDNummer/>

Sie können mit leeren Elementen zusammen Attribute verwenden, um URLs oder extern gespeicherte Dateien anzugeben. Das folgende leere Element kann beispielsweise verwendet werden, um (mit Hilfe eines entsprechenden XML-Interpreters) das Bild eines Autos darzustellen:

</AutoBild URL="1995OpelCorsa.jpg"/>

Beachten Sie, dass durch einfaches Hinzufügen eines Attributs mit dem Namen "URL" dieser URL nicht automatisch beim Verarbeiten der XML-Datei aufgerufen wird. Die Anwendung, die die Datei verarbeitet, muss wissen, wie sie das URL-Attribut zu interpretieren hat.



Kommentare

Wie bei HTML können Sie Kommentare in die XML-Datei einschließen. Diese werden von den Zeichen <!-- und --> umschlossen und normalerweise von XML-Prozessoren ignoriert. Beispiel: Um einen Kommentar zum Status des Elements <Adresse> hinzuzufügen, gehen Sie wie folgt vor:

<Adresse>
<!-- Warten, bis Adresse von der Buchhaltung mitgeteilt wird. -->
</Adresse>


Verarbeitungsanweisungen

In HTML werden Kommentare normalerweise verwendet, um besondere Befehle für Browser und andere HTML-Prozessoren anzugeben. Die Autoren der XML-Spezifikationen haben eine Methode für das Einfügen anwenderdefinierter Befehle in XML-Dateien und DTDs entwickelt, um XML-Kommentaren auf das zu begrenzen, was sie ausschließlich sein sollten ­ nämlich Kommentare. Diese anwenderdefinierten Befehle, so genannte "PIs" (Processing Instructions) werden einfach zwischen einem <? und einem ?> eingeschlossen. Am Anfang dieser PIs steht der Name der Anwendung, auf den ein Leerzeichen sowie Informationen folgen, die für die jeweilige Anwendung u. U. von Bedeutung sind. PIs können überall da eingesetzt werden, wo auch Kommentare verwendet werden.


XML-Definitionen

Jedes XML-Dokument sollte mit einer XML-Definition beginnen. Wie die PIs werden auch die XML-Definitionen von einem <? und einem ?> eingeschlossen. Hier ein Beispiel für eine XML-Definition:

<?xml version="1.0" standalone="yes"?>

Das Attribut "version" gibt an, dass dieses Dokument die Regeln der XML 1.0 erfüllt. Das Attribut "standalone" gibt an, dass alle Auszeichnungsvereinbarungen, die für die Verarbeitung dieses XML-Dokuments erforderlich sind, im Dokument enthalten sind.


Entitätsverweise

Ein Elementverweis ist ein Wort, das als Kürzel für ein Zeichen, eine Zeichenkette oder eine Datei dient. Beispiel: Bei Verwendung des Entitätsverweises &lt; zur Darstellung einer sich öffnenden spitzen Klammer (<) im Inhalt eines XML-Dokument vermeiden Sie, dass der XML-Parser das Zeichen "<" irrtümlicherweise als Anfang eines Tags interpretiert. Weitere Hinweise zu Entitätsverweisen finden Sie unter "Entitätsverweise" im Abschnitt "Mit DTDs arbeiten" in diesem Kapitel.


Wohlgeformte XML

Wohlgeformte XMLs erfordern, dass das XML-Dokument mit einer XML-Definition beginnt und über ein Stammelement verfügt, das alle anderen Elemente enthält (<Artikel> im Beispiel unten). Sie erfordern außerdem, dass jedes Element im Dokument über das entsprechende Endtag verfügt. Im Folgenden ein Beispiel für wohlgeformte XML:

<?xml version="1.0" standalone="yes"?>
<Artikel>
<Schlagzeile>
<Titel>Berliner Kunstmuseum wird geschlossen</Titel>
<Autor>Linda Spano</Autor>
<Inhalt>
Das Berliner Kunstmuseum schließt seineTore nächste Woche.
</Inhalt>
</Schlageile>
</Artikel>


Gültige XML

Ein wohlgeformtes XML-Dokument kann in seinen Verwendungsmöglichkeiten eingeschränkt sein, wenn es nicht gültig ist. Ein XML-Dokument ist dann gültig, wenn es die Spezifikationen der zugehörigen DTD erfüllt. Weiter Hinweise zu DTDs und zur Gültigkeit von XML-Dokumenten finden Sie unter "DTDs verstehen" in diesem Kapitel.


XML-Prozessoren

Ein XML-Prozessor ist ein Programm, das eine XML-Datei liest und verarbeitet. Es gibt verschiedene XML-Prozessoren. Ein XML-Prozessor kann eine XML-Datei in eine HTML-Webseite, eine PDF-Datei oder eine PostScript-Datei konvertieren. Er kann den Inhalt einer XML-Datei laut lesen oder in Blindenschrift konvertieren. Er kann sogar verwendet werden, um strukturierte XML-Inhalte in eine Datenbank zu kopieren.

XML-Parser

Der XML-Parser erkennt die XML-Regeln und prüft, ob das XML-Dokument wohlgeformt ist. Er prüft jedoch nicht unbedingt, ob das XML-Dokument gemäß der zugehörigen DTD gültig ist. Dafür ist ein prüfender XML-Parser erforderlich (siehe unten).

Prüfende XML-Parser

Prüfende XML-Parser vergleichen das XML-Dokument mit den Regeln der DTD und prüfen, ob es der DTD entspricht. Ein guter prüfender XML-Parser zeigt außerdem Probleme auf, die er evtl. in der XML-Datei antrifft. Weitere Hinweise zu XML-Parsern finden Sie unter "DTDs verstehen" in diesem Kapitel.

Lesen Sie im Anhang A, "XML-Kurzübersicht", in Kapitel 7, "Anhänge", nach, wenn Sie XML-Funktionen und -Konventionen schnell nachschlagen möchten.



Mit DTDs arbeiten

Eine DTD (Document Type Definition) gibt an, welche Elemente eine XML-Datei enthalten darf und wie diese Elemente strukturiert sein müssen. XML-Dokumente müssen nicht unbedingt eine zugehörige DTD aufweisen. Solange eine XML-Datei die grundlegende XML-Syntax befolgt, ist sie "wohlgeformt", d. h. sie kann von einer XML-fähigen Anwendung gelesen werden. Eine XML-Datei ist jedoch nur dann "gültig", wenn Sie die Regeln einer bestimmten DTD erfüllt.

DTDs sind wichtig, denn sie stellen eine verlässliche und gut dokumentierte Struktur für XML-Dokumente bereit. Ohne DTDs werden XML-Dokumente von zwei Organisationen, die zusammenarbeiten, möglicherweise völlig unterschiedlich strukturiert und mit Tags markiert, d. h. ihre gespeicherten Daten sind nicht kompatibel, obwohl beide Organisationen auf XML umgestellt haben. Wenn zwei Organisationen jedoch über dieselbe DTD verfügen ­ z. B. eine DTD, die sie gemeinsam entwickelt haben oder eine DTD, die als Standard in ihrer Industriebranche gilt ­ können sie Informationen auf einfache und verlässliche Weise austauschen.


Externe und interne DTDs

Es gibt zwei Arten von DTDs: externe und interne.

Technisch gesehen besteht eine DTD aus einer Liste von Auszeichnungsdefinitionen (Element- und Attributdefinitionen, Entitäten, Notationen, Verarbeitungsanweisungen und Kommentaren), die über eine DOCTYPE-Definition angegeben werden. Die Angaben "externe DTDs" und "interne DTDs" in diesem Dokument beziehen sich auf DTDs, die im technischen Sinne nicht vollständig sind. Diese Angaben sind jedoch geläufig und praktisch.


Externe DTDs

Eine externe DTD (oder externe Untergruppe) ist eine Datei, die eine Liste mit Auszeichnungsdefinitionen enthält. Externe DTDs können auf einfache Weise für verschiedene XML-Dokumente und von verschiedenen Organisationen gemeinsam verwendet werden. Um eine externe DTD in einer XML-Datei zu verwenden, setzen Sie diese einfach an den Anfang der XML-Datei ­ wie im folgenden Beispiel gezeigt:

<?xml version="1.0" standalone="no">
<!-- Die folgende Zeile beschreibt ein Stammelement (<meinDokument>) und zeigt auf den URL einer externen DTD-Datei mit dem Namen "meindokument.dtd" -->
<!DOCTYPE meinDokument SYSTEM "http://www.quark.com/meinDokument.dtd">
<!-- Dokument beginnt hier -->
<meinDokument>
Wenn Gesetze ihre Rechtskräftigkeit verlieren, dann regieren nur noch Banditen.
</meinDokument>

Interne DTDs

Eine interne DTD (oder interne Untergruppe) ist in der XML-Datei enthalten, die sie beschreibt. Um eine interne DTD zu verwenden, setzen Sie diese wie im folgenden Beispiel ganz einfach an den Anfang der XML-Datei.

<?xml version="1.0" standalone="yes">
<!-- Die folgenden Zeile beschreibt ein Stammelement (<meinDokument>) und kennzeichnet den Anfang der DTD -->
<! DOCTYPE meinDokument[
<!-- Interne DTD beginnt hier -->
<!ELEMENT meinDokument ANY>
<!-- Ende der DTD -->
]>
<!-- Dokument beginnt hier -->
<meinDokument>
Wenn Gesetze ihre Rechtskräftigkeit verlieren, dann regieren nur noch Banditen.
</meinDokument>

Wenn ein Dokument eine externe DTD (oder irgendeine andere externe Entität) verwendet, muss für das Attribut "standalone" in der ersten Zeile "no" angegeben werden. Weitere Hinweise hierzu finden Sie unter "Entitätsverweise verwenden" in diesem Abschnitt.


Interne und externe DTDs verbinden

In einem vorgegebenen XML-Dokument können Sie eine externe DTD festlegen und diese dann zu einer internen DTD hinzufügen oder mit einer internen DTD überschreiben. Im Folgenden ein Beispiel für ein solches XML-Dokument:

<?xml version="1.0" standalone="no">
<!-- Die folgende Zeile beschreibt ein Stammelement (<meinDokument>), zeigt auf den URL einer externen DTD-Datei mit dem Namen "meinDokument.dtd" und gibt den Anfang der internen DTD an -->
<!DOCTYPE meinDokument SYSTEM "http://www.quark.com/meinDokument.dtd" [ <!-- Interne DTD hier einfügen; fügt den in der externen DTD definierten Elementtypen u. U. neue Elementtypen hinzu -->
<!ELEMENT meinLokalesDTDElement ANY>
<!-- Ende der DTD -->
]>
<!-- Dokument beginnt hier -->
<meinDokument>
<meinLokalesDTDElement>
Wenn Gesetze ihre Rechtskräftigkeit verlieren, dann regieren nur noch Banditen.
</meinLokalesDTDElement>
</meinDokument>


Eine DTD vorbereiten

DTDs erfordern beachtliche Vorbereitungsarbeiten, d. h. Sie können nicht einfach mit dem Schreiben einer DTD beginnen.

Es wird empfohlen, Industriestandard-DTDs zu verwenden, bevor Sie mit der Erstellung ihrer eigenen DTD beginnen. Weitere Hinweise hierzu finden Sie unter "Industriestandard-DTDs" in diesem Kapitel.


Überlegen Sie zunächst, welche Aufgaben ihre DTD ausführen soll und welche Elemente verwendet werden sollen. Bei Verwendung bestimmter Elemente, wie z. B. <Adresse>, sollten Sie die Unterteilung dieser Elemente in Unterelemente, wie z. B. <Anschrift>, <Stadt>, <Bundesstaat> und <Postleitzahl> in Erwägung ziehen, besonders dann, wenn die Möglichkeit besteht, dass Sie den Inhalt Ihrer XML-Dateien eines Tages in eine Datenbank transferieren.

Jetzt zum schwierigeren Teil: Sie müssen die Beziehungen all dieser Elemente zueinander festlegen. DTDs können festlegen, welche Elemente zulässig sind, wie diese angeordnet werden und was für welche und wie viele Unterelemente sie enthalten sollen. DTDs könne außerdem festlegen, welche anderen Elemente bestimmte vorgegebene Elemente enthalten sollen und ob ein bestimmtes Element Daten enthalten muss oder nicht.

In XML: Extensible Markup Language empfiehlt der Autor Eliotte Rusty Harold die Verwendung einer Tabelle, um die Beziehungen der verschiedenen Elemente der DTD untereinander festzulegen. Diese Tabelle sollte sich aus den folgenden Spalten zusammensetzen, wobei die Informationen in den Spalten nur Beispiele sind:

ElementnameMuss enthaltenKann enthaltenMuss eingeschlossensein von
<Adresse><Anschrift>, <Stadt>, <Bundesstaat>, <Postleitzahl><z.H.><persönlicheDaten>
<Adresse><Adresse>

Jede Zeile der Tabelle sollte ein Element angeben, das Sie in der DTD verwenden möchten.


Eine DTD verwenden

DTDs bestehen ­ genau wie die XML-Dateien ­ aus Text. Eine XML-Datei kann keine DTD, eine externe DTD, eine interne DTD oder beides, eine externe und eine interne DTD, verwenden.

Ganz gleich, welcher DTD-Typ in einem XML-Dokument zum Einsatz kommt, die DTD muss am Anfang des XML-Dokuments, hinter der XML-Definition und vor dem eigentlichen XML-Dokumenttext angegeben werden. Der DTD-Abschnitt beginnt mit "<!DOKTYP StammName [" und endet mit "]>". Das folgende Beispiel zeigt ein vollständiges XML-Dokument, das eine vollständige DTD (fett gedruckt) enthält.

<?xml version="1.0" standalone="yes">
<!-- DTD beginnt hier -->
<!DOCTYPE Meldung [
<!ELEMENT Meldung ANY>
]>
<!-- Dokument beginnt hier -->
<Meldung>
Wenn Gesetze ihre Rechtskräftigkeit verlieren, dann regieren nur noch Banditen.
</Meldung>

Hier die Aufschlüsselung des obigen Beispiels:

Aus diesem Beispiel wird ersichtlich, dass jede Elementtyp-Definition den Namen des Elements und die Art der Daten angibt, die in diesem Element enthalten sein können. Um die Elementtypdefinition für <Meldung> so zu ändern, dass das Element ausschließlich Text und keine anderen Elemente enthält, ändern Sie das Schlüsselwort "ANY" zu "(#PCDATA)" wie folgt:

<?xml version="1.0" standalone="yes">
<!-- DTD beginnt hier -->
<!DOCTYPE Meldung [
<!ELEMENT Meldung (#PCDATA)>
]>
<!-- Dokument beginnt hier -->
<Meldung>
Wenn Gesetze ihre Rechtskräftigkeit verlieren, dann regieren nur noch Banditen.
</Meldung>

Diese Vorgehensweise ist jedoch nicht empfehlenswert, denn das Stammelement Ihres Dokuments könnte dann nur analysierte Zeichendaten (siehe Anmerkungen unten) enthalten. Sie können dann keine weiteren Elemente für die Untergliederung der Informationen hinzufügen.

"PCDATA" steht für "parsed character data" (analysierte Zeichendaten). Darunter versteht man Text, der Verweise auf Entitäten, Kommentare und Verarbeitungsanweisungen enthalten kann.


Werfen wir mal einen Blick auf eine gebräuchliche DTD. Die folgende interne DTD definiert die Struktur für ein Verzeichnis von Zweigstellen:

<!-- Stammelement ist <ZweigstellenVerzeichnis> -->
<!ELEMENT Zweigstellenverzeichnis ANY>
<!ELEMENT Anschrift (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT Bundesstaat (#PCDATA)>
<!ELEMENT Postleitzahl (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Telefon (#PCDATA)>
<!ELEMENT Fax (#PCDATA)>
<!ELEMENT E-Mail (#PCDATA)>

Wie Sie sehen können, wurde ein Kommentar eingefügt, der <Zweigstellenverzeichnis> als das Stammelement der DTD definiert. DTDs können normalerweise keine Stammelemente angeben, dies ist Aufgabe der Zeile !DOCTYPE im XML-Dokument. Die Angabe von Stammelementen über Kommentare wird empfohlen, damit der DTD-Anwender weiß, um welche Stammelemente es sich handelt.

Einige DTDs können mehrere Elemente enthalten, die als Stammelemente fungieren. Sie können beispielsweise eine DTD erstellen, die Definitionen für Weißbuchdokumente und Dokumente zu häufigen Fragen enthält. Mit Hilfe dieser DTD können Sie dann beide Dokumentarten erstellen, indem Sie <whitePaper> oder <Häufige Fragen> als Stammelement für alle XML-Dateien definieren.


Die verbleibenden Zeilen der DTD beschreiben die Elemente für die Anschrift der Zweigstellen: Anschrift, Stadt, Bundesstaat, Postleitzahl, Land, Telefon, Faxnummer und E-Mail-Adresse.


Tag-Auswahl und Reihenfolge steuern

Die oben beschriebene DTD ist vielleicht genau richtig für Ihre Anforderungen, sie nutzt jedoch die XML-Funktionen nicht wirklich. Sie gibt beispielsweise nicht an, welche Adressenelemente zu welchen Zweigstellen gehören und in welcher Reihenfolge die Informationen angeordnet werden sollen. Sie könnten also ein Dokument erstellen, das alle Städte, Anschriften, Telefonnummern usw. in beliebiger Reihenfolge auflistet und trotzdem die Regeln dieser DTD erfüllt.

Um die DTD sinnvoll aufzubauen, sollten Sie die einzelnen Elemente für die jeweiligen Zweigstellen zusammenfassen und in einer bestimmten Reihenfolge anordnen. Dies können Sie durch Erstellen so genannter Container-Elemente erzielen, die alle Informationen für eine Zweigstelle (hier <Zweigstelle> genannt) zusammenfassen. Anschließend können Sie die Unterelemente für dieses Container-Element und deren Reihenfolge festlegen. All dies erreichen Sie, indem Sie der DTD eine Zeile (fett gedruckt) hinzufügen.

<!-- Stammelement ist <Zweigstellenverzeichnis> -->
<!ELEMENT Zweigstellenverzeichnis ANY>
<!ELEMENT Anschrift (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT Bundesstaat (#PCDATA)>
<!ELEMENT Postleitzahl (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Telefon (#PCDATA)>
<!ELEMENT Fax (#PCDATA)>
<!ELEMENT E-Mail (#PCDATA)>
<!ELEMENT Zweigstelle (Anschrift, Stadt, Bundesstaat, Postleitzahl, Land, Telefon, Fax, E-Mail)>

Dieses neue Element besagt Folgendes: "Wenn das Dokument ein Element mit dem Namen <Zweigstelle> enthält, dann muss dieses Element genau eines der folgenden Elemente, in genau dieser Reihenfolge und sonst nichts enthalten."

Was ist zu tun, wenn die Anschrift einiger Zweigstellen länger als eine Zeile ist? Indem Sie ein Pluszeichen + an das Ende des Elementnamens setzen, werden ein oder mehrere Vorkommnisse eines Elements aus der Liste der Unterelemente zulässig. Beispiel: Um ein oder mehrere Elemente vom Typ <Anschrift> innerhalb des Elements <Zweigstelle> zuzulassen, verfahren Sie das Element wie folgt:

<!ELEMENT Zweigstelle(Anschrift+, Stadt, Bundesstaat, Postleitzahl, Land, Telefon, Fax, E-Mail)>

Was ist zu tun, wenn einige Zweigstellen kein Faxgerät, andere dagegen mehrere Faxgeräte haben? Setzen Sie ein * an das Ende des Elementnamens, um null oder mehr Vorkommnisse eines Elements anzugeben:

<!ELEMENT Zweigstelle (Anschrift+, Stadt, Bundesstaat, Postleitzahl, Land, Telefon, Fax*, E-Mail)>

Und was ist zu tun, wenn sich die Zweigstellen in einem Land befinden, in dem Postleitzahlen unbekannt sind? Setzen Sie ein ? an das Ende des Elementnamens, um null oder ein Vorkommnis eines bestimmten Elements anzugeben:

<!ELEMENT Zweigstelle (Anschrift+, Stadt, Bundesstaat, Postleitzahl?, Land, Telefon, Fax*, E-Mail)>

Die "Bundesstaaten" der USA werden in Kanada beispielsweise als "Provinzen" bezeichnet. Wenn Sie Zweigstellen in den USA und in Kanada besitzen, sollten Sie die Auswahloption für ein Element <Bundesstaat> oder ein Element <Provinz> bereitstellen, indem Sie beide Elemente in Klammern setzen und mit dem Zeichen | trennen:

<!ELEMENT Zweigstelle (Anschrift+, Stadt, (Bundesstaat|Provinz), Postleitzahl?, Land, Telefon, Fax*, E-Mail)>

Und zum Schluss stellen wir sicher, dass sich das <Zweigstellenverzeichnis> ausschließlich aus <Zweigstelle>-Listen zusammensetzt, indem wir die Definition für <Zweigstellenverzeichnis> von ANY auf (Zweigstelle*) ändern. Das Ganze sieht dann so aus:

<!-- Stammelement ist <Zweigstellenverzeichnis> -->
<!ELEMENT Zweigstellenverzeichnis (Zweigstelle*)>
<!ELEMENT Anschrift (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT Bundesstaat (#PCDATA)>
<!ELEMENT Provinz (#PCDATA)>
<!ELEMENT Postleitzahl (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Telefon (#PCDATA)>
<!ELEMENT Fax (#PCDATA)>
<!ELEMENT E-Mail (#PCDATA)>
<!ELEMENT Zweigstelle (Anschrift+, Stadt, (Bundesstaat|Provinz), Postleitzahl?, Land, Telefon, Fax*, E-Mail)>

Hier noch einmal in der Kurzübersicht:

SymbolBedeutung
KeinesGenau ein Element
+Mindestens ein Element
*Null oder mehr Elemente
?Null oder ein Element

Diese Sonderzeichen können zusammen mit runden Klammern zur Erstellung komplexer Elementtypendefinitionen wie in der folgenden DTD verwendet werden, um Kontaktinformationen auf täglicher Basis aufzulisten:

<!-- Stammelement ist <KontaktPlan> -->
<!ELEMENT KontaktPlan (Kontaktinfo*)>
<!ELEMENT BüroTelefon (#PCDATA)>
<!ELEMENT Datum (#PCDATA)>
<!ELEMENT BüroFax (#PCDATA)>
<!ELEMENT PrivatTelefon (#PCDATA)>
<!ELEMENT Pager (#PCDATA)>
<!ELEMENT PrivatFax (#PCDATA)>
<!ELEMENT ReiseOrt (#PCDATA)>
<!ELEMENT ReiseTelefon (#PCDATA)>
<!ELEMENT ReiseFax (#PCDATA)>
<!ELEMENT E-Mail (#PCDATA)>
<!ELEMENT Meldung (#PCDATA)>
<!ELEMENT KontaktInfo (Datum, ((BüroTelefon, BüroFax*, E-Mail) | ((PrivatTelefon | ReiseTelefon | Pager)+, (PrivatFax* | ReiseFax*), E-Mail)), Meldung?)>

Diese Liste soll für das Büro, für Zuhause und für Geschäftsreisen gelten. Deshalb kann jedes Element <KontaktInfo> eine der folgenden Informationslisten mit Unterelementen in vorgegebener Reihenfolge enthalten:


Leere Tags zulassen

Sie sollten XML-Dokumente so verfassen, dass sie leicht in das HTML-Format übersetzt werden können und Tags, wie z. B. <BR> oder <HR>, in der XML-Datei verwenden, die dann später in der HTML-Datei wörtlich übersetzt werden können.

Mit XML ist dies eigentlich nicht möglich, da jedes Element ein Endtag aufweisen muss. Sie können jedoch EMPTY-Tags erstellen, die dann von einem XML-zu-HTML-Konverter in die jeweiligen Ausgabetags übersetzt werden. Um Tags vom Typ <HR> zu erstellen, würden Sie z. B. Folgendes in der DTD einschließen:

<!ELEMENT HR EMPTY>

Um dieses Tag zu verwenden, können Sie eine Zeile wie die folgende in die XML-Datei einfügen:

<HR/>

Sie können das Element nicht als "<HR>"-Tag einfügen, da jedes XML-Tag entweder ein Endtag oder ein Endtag mit einem Schrägstrich aufweisen muss. Ein XML-zu-HTML-Konverter kann das <HR/>-Tag jedoch in ein <HR>-Tag konvertieren.

EMPTY-Tags werden oft für Bilder verwendet. Der URL der Bilddaten wird in einem der Attribute des EMPTY-Tags gespeichert. Weitere Hinweise zu Attributen finden Sie unter "Attribute definieren" in diesem Abschnitt.



Zeichenverweise verwenden

Mit Zeichenverweise werden Zeichen des Unicode-Zeichensatzes als analysierte Zeichendaten dargestellt. Die Syntax lautet wie folgt:

&#UnicodeWertDesZeichens;

Wenn Sie beispielsweise das Euro-Zeichen vor die Zahl 500 in einem Element des Typs <Betrag> setzen möchten, können Sie folgendermaßen vorgehen (Zeichenverweise sind fett gedruckt):

<Betrag>&#x20AC;500</Betrag>

Es ist die Aufgabe des XML-Prozessors, die jeweiligen Unicode-Zeichen mit Entitätsverweisen bei der Ausgabe zu ersetzen.



Entitätsverweise verwenden

Ein Entitätsverweis ist Text, der für Zeichen, Zeichenketten, eine extern gespeicherte XML-Datei oder eine binäre Datei (wie z. B. Bild- oder Audiodateien) steht. Man unterscheidet zwischen fünf verschiedenen Entitätsverweisen:

Diese unterschiedlichen Entitätsverweistypen werden im Folgenden genauer erklärt.

Was ist der Unterschied zwischen einer Entität und einem Entitätsverweis? Bei einem Entitätsverweis handelt es sich um ein Kürzel, das Sie in ein XML-Dokument für die Darstellung einer Entität einfügen. Die Entität ist der Inhalt, der den Entitätsverweis bei der Verarbeitung des XML-Dokuments ersetzt.


Analysierte interne Entitätsverweise

Ein analysierter interner Entitätsverweis ist ein Kürzel für eine Zeichenkette, das Sie innerhalb eines vorgegeben XML-Dokument mehrmals wieder verwenden können. Das Format für die Definition eines analysierten internen Entitätsverweises in einer DTD sieht so aus:

<!ENTITY EntitätsName "Ersatztext">

Beispiel: Sie erstellen ein XML-Dokument, das eine Liste der Mitarbeiter und Informationen zu jedem einzelnen Mitarbeiter enthält. Der Datensatz für jeden Mitarbeiter muss den Satz "Beschäftigungsjahre bei der Firma:" enthalten, auf den eine Zahl folgt. Sie können einen analysierten internen Entitätsverweis für diesen Satz als Teil der Dokument-DTD wie folgt erstellen und müssen diesen Satz dann nicht wiederholt manuell eingeben:

<!-- Stammelement ist <MitarbeiterListe> -->
<!DOCTYPE MitarbeiterListe [
<!-- DTD beginnt hier -->
<!ENTITY Jr "Beschäftigungsjahre bei der Firma:">
<!ELEMENT MitarbeiterListe (Mitarbeiter*)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT IDNummer (#PCDATA)>
<!ELEMENT Beschäftigungsjahre bei der Firma (#PCDATA)>
<!ELEMENT Mitarbeiter (Name, IDNummer, Beschäftigungsjahre mit der Firma)>
]>

Um den analysierten internen Entitätsverweis "Jr" im Dokument zu verwenden, gehen Sie folgendermaßen vor:

<Mitarbeiter>
<Name>Peter Bohne</Name>
<IDNummer>H867KL671BR</IDNummer>
<Beschäftigungsjahre bei der Firma>&Jr; 12</Jahre bei der Firma>
</Mitarbeiter>

Bei der Verarbeitung des Elements <Mitarbeiter> erweitert der XML-Prozessor den analysierten internen Entitätsverweis wie folgt in der XML unten:

<Mitarbeiter>
<Name>Peter Bohne</Name>
<IDNummer>H867KL671BR</IDNummer>
<Beschäftigungsjahre bei der Firma>Jahre bei der Firma: 12</Jahre bei der Firma>
</Mitarbeiter>

Man unterscheidet zwischen fünf vordefinierten analysierten internen Entitätsverweisen, die in XML verfügbar sind. Im Gegensatz zu allen anderen analysierten internen Entitätsverweisen gehören diese zur XML-Spezifikation und brauchen nicht definiert zu werden

ZeichenEntitätsverweis
<&lt;
>&gt;
&&amp;
"&quot;
'&apos;

Beispiel: Sie müssen das Zeichen "Größer als" (>) im Inhalt des XML-Dokuments verwenden. Wie Sie bereits wissen, deutet dieses Zeichen in XML das Ende eines Tags an. Um den XML-Prozessor nicht zu verwirren, können Sie alle Vorkommnisse des "Größer als"-Zeichens mit "&gt;" ersetzen. Gehen Sie wie unten gezeigt vor, um in einer XML-Datei Folgendes auszudrücken: "die Gesamtsumme > als die Summe der Bestandteile":

<Banalität>
die Gesamtsumme &gt; die Summe der Bestandteile
</Banalität>

Es gibt drei Einschränkungen bei der Verwendung von analysierten internen Entitätsverweisen:

Analysierte externe Entitätsverweise

Mit Hilfe von analysierten externen Entitätsverweisen können Sie Inhalte einschließen, die in einer externen Textdatei gespeichert sind. Analysierte externe Entitätsverweise sollte in einer DTD wie folgt angegeben werden:

<!ENTITY EntitätsName SYSTEM "URL der anzugebenden Datei">
<!ENTITY EntitätsName PUBLIC "Name der anzugebenden Datei" "URL der anzugebenden Datei">

Im ersten Beispiel können Sie den URL einer bestimmten Datei verwenden. Im zweiten Beispiel können Sie den Namen einer Ressource verwenden, die wiederum auf einen URL zeigt. Der darauf folgende URL ist ein "Sicherungs"-URL, der nur dann verwendet wird, wenn der Name nicht gefunden werden kann.

Analysierte externe Entitätsverweise können verwendet werden, um den Inhalt zwischen XML-Dateien freizugeben. Das Beispiel unten zeigt ein vollständiges XML-Dokument, bei dem der Text in der Datei mit dem Namen "meinedatei.txt" auf der Quark™ Website gespeichert wird.

<?xml version="1.0" standalone="no">
<!-- Stammelement ist <meinStamm> -->
<!DOCTYPE meinStamm [
<!-- DTD startet hier -->
<!ELEMENT meinStamm ANY>
<!ENTITY xmlInhalt SYSTEM "http://www.quark.com/meinedatei.txt">
]>
<!-- Dokument beginnt hier -->
<meinStamm>
&xmlContent;
</meinStamm>

Dies erweist sich als praktisch, da Sie den Inhalt der Datei "meinedatei.text" auch in anderen XML-Dateien verwenden können.

Wenn in einem Dokument externe Entitätsverweise verwendet werden, sollten Sie für das Attribut "standalone" in der XML-Definition "no" angeben.


Nicht analysierte externe Entitätsverweise

Wie sieht es aus, wenn Sie in einem XML-Dokument auf Bilder, Tabellenkalkulationen, Audiodateien, HTML-Dateien oder nicht-XML-Dateien verweisen wollen? Sie können in solchen Fällen keine analysierten externen Entitätsverweise verwenden, da der XML-Prozessor dann versucht, die Binärdatei zu analysieren, was zu Fehlern führt.

Um dieses Problem zu umgehen, können Sie eine Notation an das Ende des externen Entitätsverweises setzen. Diese Notation weist den XML-Prozessor an, die Zieldatei nicht zu analysieren und gibt an, um welchen Dateityp es sich handelt. Das Format für die Angabe einer Notation in DTDs sieht so aus:

<!NOTATION NotationsName SYSTEM "AnwendungsName">

Wenn Sie z. B. eine Verbindung zwischen JPEG-Dateien und Adobe® Photoshop® herstellen möchten, fügen Sie der DTD folgenden Kommentar hinzu:

<!NOTATION jpeg SYSTEM "Adobe Photoshop">

Verwenden Sie die folgende Syntax, wenn Sie eine Notation in einen externen Entitätsverweis einsetzen möchten:

<!ENTITY EntitätsName SYSTEM "URL" NDATA NotationsName>

Beispiel: Um eine Entität mit dem Namen "meinBild" zu erstellen, die auf einen URL zeigt, der eine JPEG-Datei enthält, verwenden Sie das folgende Tag:

<!ENTITY meinBild SYSTEM "http://www.quark.com/Bild.jpg" NDATA jpeg>

Sie können auch die Syntax PUBLIC mit Notationen verwenden, indem Sie zuerst den Namen für die Notation PUBLIC und dann einen "Sicherungs"-URL für die Notation festlegen:

<!ENTITY meinBild PUBLIC "-//Quark//Fictional JPEG Name""http://www.quark.com/xml/picture.jpg" NDATA jpeg>

Andere Möglichkeiten, auf externe Dateien zu verweisen: Nicht analysierte Entitätsverweise sind nicht die einzige Möglichkeit, um in XML-Dateien auf externe Dateien zu verweisen, ohne dabei festzulegen, dass die Dateien analysiert werden müssen. Sie können den URL solcher Dateien als einfaches Element oder als Attributinhalt speichern. Im ersten Beispiel unten wird der URL einer Bilddatei als Elementinhalt und im zweiten Beispiel derselbe URL als Attributinhalt angegeben.


<meinBild>http://www.quark.com.Bild.jpg</meinBild>
<meinBild URL="http://www.quark.com.Bild.jpg"/>

Die Entscheidung, ob Sie nicht analysierte Entitäten, Elemente oder Attribute für den Verweis auf nicht-XML-Dateien verwenden liegt bei Ihnen. Alle diese Methoden funktionieren gleichermaßen gut, vorausgesetzt, die Anwendung, mit der die XML-Dateien verarbeitet werden, kann die URLs auch als solche erkennen.

Entitätsverweise über interne Parameter

Wenn Sie einen Entitätsverweis erstellen möchten, der nur mit einer bestimmten DTD verwendet werden soll, müssen Sie einen Parameter-Entitätsverweis erstellen. Ein Entitätsverweis über interne Parameter unterscheidet sich vom analysierten internen Entitätsverweis durch ein %, an Stelle des &, mit dem er in der Definition und bei der Verwendung beginnt:

<!ENTITY % EntitätsName "Entitätsdefinition">
%EntitätsName;

Sie können interne Parameter-Entitätsverweise in einer externen DTD-Untergruppe auf die gleiche Weise wie analysierte interne Entitäten in einem XML-Dokument verwenden. Im Beispiel unten wird ein interner Parameter-Entitätsverweis verwendet, um auf das Inhaltsmodell zur Beschreibung des Namens einer Person in Form von Kürzeln zu verweisen.

<!ENTITY % Name "(Vorname, Nachname)">
<!ELEMENT ArbeitgeberName %Name;>
<!ELEMENT ArbeitgeberName %Name;>
<!ELEMENT KundenName %Name;>

Dies erweist sich als praktisch, da Sie die Definition aller Namenstypen gleichzeitig ändern können. Wenn Sie beispielsweise auch die zweiten Vornamen aller Arbeitnehmer, Arbeitnehmer und Kunden speichern möchten, ändern Sie die interne Parameter-Entitätsdefinition oben wie folgt:

<!ENTITY % Name "(Vorname, Zweitname, Nachname)">

Beachten Sie, dass diese Art interner Parameter-Entitätsverweise nur in der externen Untergruppe einer DTD verwendet werden kann.


Entitätsverweise über externe Parameter

Ein externer Parameter-Entitätsverweis unterscheidet sich vom analysierten externen Entitätsverweis nur dadurch, dass er mit einem % an Stelle eines & in der Definition und bei seiner Verwendung beginnt. Die beiden Zeilen unten (aus der internen Untergruppe eines XML-Dokuments) erstellen zunächst einen Entitätsverweis, der auf eine externe DTD deutet und "StandardKopfzeile.dtd" genannt wird, und schließen dann die externe DTD in der XML-Datei ein.

<!ENTITY % StandardKopfzeile SYSTEM "StandardKopfzeile.dtd">
%StandardKopfzeile;

Weitere Hinweise hierzu finden Sie unten "Öffentliche DTDs verwenden" in diesem Abschnitt.

Parameter-Entitätsverweise können nur innerhalb einer DTD verwendet werden.


Interne und externe Parameter-Entitätsverweise können zusammen verwendet werden. Sie können beispielsweise interne Parameter-Entitätsverweise in der internen Untergruppe verwenden, um auf Entitäten zu verweisen, die in der externen Untergruppe definiert wurden. Dies erweist sich als nützlich, da Sie die Definition einer Entität ändern können, ohne die interne Untergruppe der XML-Dateien ändern zu müssen, die diese Entität verwenden. Sie können beispielsweise die folgende Definition in einer Textdatei mit dem Namen "EntitätenDatei.text" einschließen.

<!ENTITY % NameEntität "<!ELEMENT Name (Vorname, Nachname)>">

Und anschließend in der internen Untergruppe des XML-Dokuments Folgendes einschließen:

<!-- Die Datei mit der Entität oben einschließen -->>
<!ENTITY % EntitätenDatei SYSTEM "NameEntitäten.txt">
%EntitätenDatei;
<!-- Die in der externen Datei definierte Entität jetzt wie folgt nennen -->
%NameEntität;

Sie können somit die Definition des Entitätsverweises NamenEntität in beliebig vielen XML-Dokumenten ändern, indem Sie die Definition in der Datei "EntitätenDatei.txt" ändern.


Attribute definieren

Neben Inhalten können Elemente auch Attribute enthalten (siehe "XML verstehen" in diesem Kapitel). Die Rolle der Attribute ist umstritten, wir nehmen hier aber einmal an, dass ein Attribut Informationen über ein Element enthält, die für den XML-Prozessor von Bedeutung sind, ohne dabei Bestandteil des Inhalts der XML-Datei selbst zu sein.

Sie verwenden XML beispielsweise für die Verwaltung einer Buchliste, die auf einer Website angezeigt wird. Diese Liste kann auf zwei Arten angezeigt werden: als vollständige Liste oder als Liste der Bücher, die innerhalb der letzten zehn Tagen hinzugefügt worden sind. Das XML-Dokument muss dann das Datum angeben, an dem jedes Buch der Liste hinzugefügt wurde.

Sie könnten dann der Definition für das Tag <Buch> das untergeordnete Tag <AufnahmeDatum> hinzufügen oder ein Attribut mit dem Namen "AufnahmeDatum" erstellen.

Die Syntax für Attributdefinitionen lautet wie folgt:

<!ATTLIST ElementName AttributName AttributTyp StandardWert>

Um also dem Element <Buch> das Attribut "AufnahmeDatum" mit dem Standardwert "1.1.2000" zuzuordnen, fügen Sie in der DTD die folgende Zeile hinzu:

<!ATTLIST Buch AufnahmeDatum CDATA "1.1.2000">

Um diese Attribut in einem Element vom Typ <Buch> einzusetzen, verwenden Sie einfach ein Attributwertepaar wie folgt:

<Buch AufnahmeDatum="11.11.1998">
Buchbeschreibung hier einfügen
</Buch>

Dieses Attribut stellt dem XML-Prozessor die Informationen bereit, die für die Anzeige der Bücher auf Basis des Eingabedatums erforderlich sind.

Erforderliche, implizierte und vordefinierte Attribute

Attribute können erforderlich, impliziert oder vordefiniert sein. Der erforderliche Attributstandard gibt an, dass das Element in diesem Attribut enthalten sein muss. Die folgende Attributdefinition gibt an, dass jedes <Buch>-Element über das Attribut "AufnahmeDatum" verfügen muss.

<!ATTLIST Buch AufnahmeDatum CDATA #REQUIRED>

Der implizierter Attributstandard gibt an, dass das Element das jeweilige Attribut enthalten oder nicht enthalten kann, abhängig davon, ob dies vom XML-Autor festgelegt wurde oder nicht. Die folgende Attributdefinition gibt beispielsweise an, dass jedes <Buch> das Attribut "AufnahmeDatum" u. U. enthält oder nicht:

<!ATTLIST Buch AufnahmeDatum CDATA #IMPLIED>

Der vordefinierte Attributwert gibt an, dass das Attribut für jedes Element einen genauen Wert enthalten muss. Die folgende Attributdefinition gibt beispielsweise an, dass für jedes <Buch> der für "AufnahmeDatum" eingegebene Wert "11.11.1998" lauten muss:

<!ATTLIST Buch AufnahmeDatum CDATA #FIXED "11/11/1998">

In diesem Beispiel nimmt der XML-Prozessor an, dass das "AufnahmeDatum"-Attribut für jedes <Buch> auf "11.11.1998" gesetzt ist, selbst dann, wenn das Attribut ausgelassen wurde.

Wenn eine Attributdefinition über einen Standardwert verfügt, die Optionen #REQUIRED, #IMPLIED oder #FIXED jedoch nicht angibt, verwendet der XML-Prozessor den Standardwert für das Attribut, wenn das Attribut ausgelassen wird.


Attributtypen

Das CDATA-Schlüsselwort in unserer Beispielattributdefinition gibt an, dass dieses Attribut Zeichendaten enthalten soll. CDATA ist jedoch nur eine Option für Attributtypen. Eine vollständige Liste folgt.

<!-- In der DTD -->
<!ENTITY StandardHülle SYSTEM "KeineHülle.jpg" NDATA jpg>
<!ENTITY meineHülle SYSTEM "meineBuchhülle.jpg" NDATA jpg>
...
<!ATTLIST Buch Hülle ENTITY StandardHülle>

<!-- Im XML-Text -->
<Buch Hülle="meineHülle">
Buchbeschreibung hier einfügen
</Buch>

<!-- In der DTD -->
<!ENTITY meineHülle SYSTEM "meineBuchhülle.jpg" NDATA jpg>
<!ENTITY meinAutor SYSTEM "meinBuchAutor.jpg" NDATA jpg>
...
<!ATTLIST Buch Grafiken ENTITIES #IMPLIED>

<!-- Im XML-Text -->
<Buch Grafiken="meineHülle meinAutor">
Buchbeschreibung hier einfügen
</Buch>

<!ATTLIST Buch VerkaufsStatus (Sonder_Preis | Regulärer_Preis) #IMPLIED>

<!-- In der DTD -->
<!ATTLIST Buch BuchNummer ID #REQUIRED>

<!-- Im XML-Text -->
<Buch BuchNummer="B068157">
Buchbeschreibung hier einfügen
</Buch>

Ein ID-Attribut muss über die definierten Standards #IMPLIED oder #REQUIRED verfügen. Kein Element darf mehr als ein ID-Attribut aufweisen.


<!-- In der DTD -->
<!ATTLIST Buch BuchNummer ID #REQUIRED>
<!ATTLIST Buch katalogisiertIn IDREF #REQUIRED>

<!-- Im XML-Text -->
<Buch BuchNummer="B000321">
Ein Bücherkatalog über Kräuter.
</Buch>

<Buch bookNumber="B000123" katalogisiertIn="B000321">
Ein Buch über Kräuter.
</Buch>

<!-- In der DTD -->
<!ATTLIST Buch lokalerName NMTOKEN #IMPLIED>

<!-- Im XML-Text -->
<Buch lokalerName="Mein lokaler Name">
Buchbeschreibung hier einfügen
</Buch>

<!-- In der DTD -->
<!ATTLIST XML Buch Fachgebiet NMTOKENS #IMPLIED (xml xsl other)>

<!-- Im XML-Text -->
<XML Buch Fachgebiet ="xml">
Buchbeschreibung hier einfügen
</Buch>

<!-- In der DTD -->
<!NOTATION jpg SYSTEM "PictureViewer">
<!NOTATION mov SYSTEM "MoviePlayer"

<!ELEMENT MultimediaElement EMPTY>
<!ATTLIST MultimediaElement Datei ENTITY #REQUIRED>
<!ATTLIST MultimediaElement Typ NOTATION #REQUIRED>

<!-- Im XML-Text -->
<MultimediaElement file="MeinBild.jpg" Typ="jpg"/>
<MultimediaElement file="MeinMovie.mov" Typ="mov"/>

Keinem Element darf mehr als ein NOTATION-Attribut zugeordnet sein.


<!-- In der DTD -->
<!NOTATION Viewer SYSTEM "PictureViewer">
<!NOTATION Photoshop SYSTEM "Photoshop.exe">
<!NOTATION MovieSpMac SYSTEM "MoviePlayer">
<!NOTATION MovieSpWin SYSTEM "MoviePlayer.exe">

<!ELEMENT Bild EMPTY>
<!ATTLIST Bilddatei ENTITY #REQUIRED>
<!ATTLIST Bild BildAnw NOTATION (picViewer | Photoshop) #REQUIRED>

<!ELEMENT Movie EMPTY>
<!ATTLIST Moviedatei ENTITY #REQUIRED>
<!ATTLIST Movie MovieAnw NOTATION (movPlyrMac | movPlyrWin) #REQUIRED>

<!-- Im XML-Text -->
<image file="MeinBild.jpg" BildAnw="picViewer"/>
<movie file="MeinMovie.mov" MovieAnw="movPlyrMac"/>

In diesem Beispiel werden die beiden separaten Elemente <Bild> und <Movie> an Stelle eines einzigen Elements für Bilder und Movies erstellt. Die DTD legt für jedes dieser Elemente zwei verschiedene Anwendungen fest, die zum Ansehen der Datei verwendet werden können. Die jeweiligen <Element>-Tags des XML-Texts geben an, welche Anwendung zum Einsatz kommt.

Das Attribut xml:lang

Das Attribut "xml:lang" gibt an, welche Sprache in einem Element verwendet wird. Diese Attribut sollte eines der folgenden Elemente enthalten:

Beachten Sie, dass diese Attribute nicht vordefiniert sind. Sie müssen vor ihrer Verwendung definiert werden.


Geben Sie den Code der Sprache an, die Sie verwenden möchten. Die folgende DTD gibt beispielsweise das Element "xml:lang" an und das Element im XML-Text weist die Sprache Englisch mit Hilfe von ISO 639 zu.

<!-- In der DTD -->
<!ELEMENT Absatz (#PCDATA)>
<!ATTLIST Absatz xml:lang NMTOKEN #REQUIRED>

<!-- Im XML-Text -->
<Absatz xml:lang="en">
Absatzdaten hier einfügen.
</Absatz>

Sie können Sprachenuntertypen festlegen, indem Sie dem Namen der Sprache eine Erweiterung mit Trennstrich hinzufügen. Das folgende Element gibt beispielsweise internationales Englisch (Großbritannien) im Gegensatz zu US-Englisch an.

<!-- Im XML-Text -->
<Absatz xml:lang="en-GB">
Absatzdaten hier einfügen.
</Absatz>

Das Attribut xml:space

Das Attribut "xml:space" weist die Anwendung, die die XML-Datei verarbeitet, an, die Leerstellen für ein Element und die zugehörigen untergeordneten Elemente zu belassen (es sei denn, eines der untergeordneten Objekte definiert das Tag neu). Die folgende DTD definiert beispielsweise das Attribut "xml:space", und das Element im XML-Text setzt das Attribut für dieses Element und alle untergeordneten Elemente auf "Erhalten".

<!-- In der DTD -->
<!ELEMENT Absatz (#PCDATA)>
<!ATTLIST Absatz xml:space (Standard| Erhalten) "Standard">

<!-- Im XML-Text -->
<Absatz xml:space="Erhalten">
Absatzdaten hier einfügen.
Alle
Leer-
zeichen
erhalten.
</Absatz>


IGNORE und INCLUDE

Sie können das Tag <![IGNORE[]]> verwenden, um den XML-Parser anzuweisen, einen Textbereich in einer externen DTD zu ignorieren. Beispiel:

<-- Diese Elementdefinition wird wie üblich analysiert: -->
<!ELEMENT StudentSchritt (#PCDATA)>
<![IGNORE[
<-- Diese Elementdefinition wird vom XML-Parser ignoriert: -->
<!ELEMENT LehrerAnmerkung (#PCDATA)>
]]>

Sie können den XML-Parser anweisen, den Text zwischen den Tags zu analysieren und dabei IGNORE wie folgt ganz einfach in INCLUDE zu ändern:

<-- Diese Elementdefinition wird wie sonst auch analysiert: -->
<!ELEMENT StudentSchritt (#PCDATA)>
<![INCLUDE[
<-- Diese Elementdefinition wird jetzt wie sonst auch analysiert: -->
<!ELEMENT LehrerAnmerkung (#PCDATA)>
]]>


Öffentliche DTDs verwenden

Wie bereits erwähnt, können Sie wie folgt auf eine externe DTD in der DOCTYPE-Definition eines XML-Dokuments verweisen:

<?xml version="1.0" standalone="no">
<!-- DTD beginnt hier -->
<!DOCTYPE meinDokument SYSTEM "meinDokument.dtd">
<!-- Dokument beginnt hier -->
<meinDokument>
...

Wenn Sie eine DTD verwenden, die von der International Standards Organization (ISO) genehmigt wurde, können Sie mit Hilfe des Entitätsverweises PUBLIC den Namen einer öffentlich verfügbaren DTD-Kopie angeben. Dabei müssen Sie auch den URL der Datei SYSTEM DTD angeben, für den Fall, dass die Kopie PUBLIC der DTD nicht verfügbar ist.

<?xml version="1.0" standalone="no">
<!-- DTD beginnt hier -->
<!-- Erster URL unten ist PUBLIC DTD, zweiter ist Sicherung SYSTEM DTD -->
<!DOCTYPE StdDok PUBLIC "-//Quark//DTD StdDok 1.0//EN" "http://www.quark.com/xml/StdDok.dtd">
<!-- Dokument beginnt hier -->
<StdDok>
...


DTDs kombinieren, um zusammengesetzte DTDs zu erstellen

Es kann vorkommen, dass Sie DTDs getrennt für einzelne Dokumentkomponenten erstellen. Ihr Unternehmen verwendet beispielsweise eine DTD für alle Kopf- und Fußzeilen der XML-Dateien und andere DTDs für den Dokumenttext, der in unterschiedlichen Unternehmensabteilungen erstellt wird. Sie können diesen Vorgang rationalisieren, indem Sie eine einzelne neue DTD erstellen, die die anderen erforderlichen DTDs enthält und die Reihenfolge für deren Stammelemente wie folgt festlegt:

<!ENTITY % StandardKopfzeile SYSTEM "StandardKopfzeile.dtd">
<!ENTITY % QSBer SYSTEM "QSBer.dtd">
<!ENTITY % StandardFußzeile SYSTEM "StandardFußzeile.dtd">
%StandardKopfzeile;
%QSBer;
%StandardFußzeile;
<!-- Stammelement ist <QSBerDok> -->
<!ELEMENT QSBerDok (StandardKopfzeile, QSBer, StandardFußzeile)>

Für Dokumente, die mit dieser DTD erstellt werden, wäre <QSBerDok> das Stammelement und <StandardKopfzeile>, <QSBer> sowie <StandardFußzeile> wären direkte Unterelemente. Das Dokument würde dann z. B. so aussehen:

<?xml version="1.0" standalone="no">
<!-- Die folgende Zeile definiert ein Stammelement (<QSBerDok>) und zeig auf den URL einer externen DTD-Datei mit dem Namen "QSBerDok.dtd" -->
<!DOCTYPE QSBerDok SYSTEM "QSBerDok.dtd">
<!-- Dokument beginnt hier -->
<QSBerDok>
<StandardKopfzeile>
<!-- Inhalt der Standard-Kopfzeile hier einfügen -->
</StandardKopfzeile>
<QSBer>
<!-- QS-Bericht hier einfügen -->
</QSBer>
<StandardFußzeile>
<!-- Inhalt der Standard-Fußzeile hier einfügen -->
</StandardFußzeile>
</QSBerDok>


Lokal Änderungen an importierten DTDs vornehmen

Einige Arbeitsabläufe erfordern u. U. DTDs, die für mehrere Verwendungen fast identisch sind, für bestimmte Abteilungen oder Gruppen jedoch geringfügige Anpassungen erfordern. Gehen Sie dann folgendermaßen vor: Schließen Sie die DTD in die DOCTYPE-Definition ein und fügen Sie die erforderlichen Auszeichnungsdefinitionen der internen Untergruppe hinzu.

Elemente, die bereits in der externen DTD definiert sind, können nicht neu definiert werden. Entitäten und Standardwerte für Attribute lassen sich jedoch neu definieren.



Eine XML-Datei auf Einhaltung der DTD-Regeln prüfen

Wenn Sie Ihr XML-Dokument in einem Textverarbeitungsprogramm verfassen, können Sie die zugehörige DTD durchlesen und sicherstellen, das deren Regeln eingehalten werden. Absolute Sicherheit erhalten Sie jedoch nur dann, wenn Sie das XML-Dokument anhand eines prüfenden Parser auf die Einhaltung der DTD-Regeln prüfen. Der prüfende Parser liest die DTD und prüft anschließend, ob die XML-Datei die DTD-Regeln erfüllt. Ein guter prüfender Parser sollte Ihnen außerdem andere ggf. vorhandene Probleme anzeigen.

Achten Sie darauf, dass Sie beim Prüfen eines XML-Dokuments auf Einhaltung der zugehörigen DTD-Regeln einen prüfenden XML-Parser und keinen regulären XML-Parser verwenden. Es gibt viele XML-Parser, die Ihnen Auskunft darüber geben können, ob es sich bei der XML-Datei um ein wohlgeformtes XML-Dokument handelt, es gibt allerdings sehr viel weniger XML-Parser, die Ihnen die Gültigkeit der XML-Datei anzeigen können.


Lesen Sie im Anhang B, "DTD-Kurzübersicht", des Kapitels 7, "Anhänge", nach, wenn Sie sich über DTD-Funktionen und Konventionen informieren möchten.



Industriestandard-DTDs

Folgende Überlegungen sind anzustellen: Sollen Sie eine neue, anwenderdefinierte DTD erstellen, die ganz auf die Anforderungen Ihrer Organisation zugeschnitten ist oder sollen Sie eine Industriestandard-DTD verwenden, die Ihnen Entwicklungszeit spart und dabei hilft, sicherzustellen, dass Sie Informationen mit anderen Organisationen Ihrer Industriebranche austauschen können?

Beide Vorgehensweisen haben ihre Vorteile. Wenn Sie Ihre eigene DTD von Grund auf neu erstellen, haben Sie totale Kontrolle über den Aufbau der DTD und den Aktualisierungsprozess. Sie müssen jedoch für die Entwicklung der DTD viel Zeit und Arbeit investieren und die Anforderungen all derer berücksichtigen, die diese DTD verwenden. Wenn Sie eine Industriestandard-DTD verwenden, fällt der Entwicklungsprozess flach, Sie müssen jedoch die DTD-Konventionen und die von der DTD definierten Strukturen einhalten.


Vor- und Nachteile der Industriestandard-DTDs

Wenn Sie Informationen mit anderen Organisationen Ihrer Branche austauschen möchten, sind DTDs u. U. die richtige Lösung. Industriestandard-DTDs helfen Ihnen dabei, sicherzustellen, dass der Informationsaustausch problemlos verläuft und dass die von Ihnen mit Tags gekennzeichneten Informationen in anderen Zusammenhängen wieder verwendet werden können. Dies ist mit einer der Gründe, warum XML-Dokumente entwickelt wurden: um ein standardisiertes Format für den Austausch und die Speicherung von Informationen bereitzustellen.

Für zwei Organisationen, die mit identischen Daten arbeiten, deren Anforderungen jedoch grundlegend verschieden sind, stellen Industriestandard-DTDs eine besondere Herausforderung dar. Industriestandard-DTDs lassen sich zwar den Anforderungen einer Organisation anpassen, doch das steht im Widerspruch zu ihrem eigentliche Zweck, nämlich ein standardisiertes Format für die Speicherung und den Austausch von Informationen zwischen Organisationen sicherzustellen.


Eignen sich Industriestandard-DTDs für meine Zwecke?

Das hängt von mehreren Faktoren ab.

Gibt es eine Industriestandard-DTD für Ihre Industriebranche?

Eine Antwort auf diese Frage finden Sie u. U. im World Wide Web unter den Adressen www.schema.net und www.xml.org.

Wenn eine Industriestandard-DTD meiner Branche existiert, ist sie für mich geeignet?

Prüfen Sie genau, ob die DTD Ihren Anforderungen entspricht. Bei Wahl der falschen DTD werden die Probleme mit der Zeit wahrscheinlich zunehmen.

Wenn keine Industriestandard-DTD für Ihre Branche existiert, befindet sich bereits eine in der Entwicklung?


Industriestandard-DTDs erweitern

Einige Organisationen ziehen die Verwendung von Industriestandard-DTDs vor, die sie auf ihre speziellen Anforderungen anpassen. Die University of California Press hat beispielsweise an der SGML-DTD für den ISO-Standard "Book" einige Anpassungsänderungen vorgenommen, wie z. B. Elemente hinzugefügt, mit denen Informationen wie Kapiteluntertitel oder kapitelspezifische Autorenzeilen gespeichert werden können. Die ISO (International Standards Organisation) stellt Richtlinien für die Änderungen ihrer DTDs bereit, d. h. selbst wenn Sie diese Änderungen vornehmen, bleibt Ihre neue DTD bis zu einem gewissen Grad standardisiert.

Was ist zu tun, wenn Sie Daten mit Organisationen austauschen müssen, die die ursprüngliche, d. h. unveränderte DTD, verwenden? Einige Organisationen ziehen die Erstellung von Hilfsprogrammen vor, um Dokumente, die sich nach der von ihnen geänderten DTD richten, in Dokumente zu konvertieren, die die Regeln der ursprünglichen, nicht geänderten DTD befolgen. So wird sichergestellt, dass Sie die Vorteile einer anwenderdefinierten DTD nutzen und gleichzeitig Daten mit anderen Organisationen Ihrer Branche austauschen können.


avenue.quark Szenarium

In avenue.quark können Sie DTDs verwenden, um strukturierten Inhalt aus QuarkXPress Passport Dokumenten zu extrahieren und diesen Inhalt im Dateisystem oder in einer Datenbank zu speichern. Im Folgenden wird dieser Vorgang an einem Beispiel beschrieben.


Die Situation

Ihre Organisation hat eine große Anzahl technischer Dokumente im QuarkXPress Passport Format erstellt, deren Inhalt in das XML-Format exportiert werden soll, um sie in einer Datenbank speichern und somit den Kunden auf dem Web zur Verfügung stellen zu können. Diese technischen Dokumente verwenden alle dieselben QuarkXPress Passport Formulare und Stilvorlagen.


Schritt 1: Eine DTD erstellen oder auswählen.

Bevor Sie den Inhalt der technischen Dokumente in ein strukturiertes Format exportieren können, muss eine Struktur für diesen Inhalt zur Verfügung stehen. Diese Struktur wird von der DTD bereitgestellt.

Weitere Hinweise zu DTDs finden Sie unter "Mit DTDs arbeiten" in diesem Kapitel.


Es gibt zwei Möglichkeiten, um eine DTD für die Verwendung mit avenue.quark bereitzustellen:


Schritt 2: Ein XML-Dokument erstellen.

Erstellen Sie ein neues XML-Dokument in avenue.quark und geben Sie die DTD an, die Sie in Schritt 1 gewählt haben. Erforderliche Elemente der DTD werden automatisch in das XML-Dokument eingefügt.

Palette XML-Arbeitsbereich für ein neues XML-Dokument


Schritt 3: Eine Tagregelgruppe erstellen.

Eine der besonderen Funktionen von avenue.quark ist das Taggen auf Regelbasis. Dabei werden Tagregeln erstellt, die avenue.quark beispielsweise anweisen, einen Absatz, auf den die Stilvorlage "Überschrift" angewendet ist, mit <Titel> zu taggen. Sie können Tagregeln auch verwenden, um anzugeben, wie bestimmte Zeichenstilvorlagen, Textfarben und lokale Formatierungsstile getaggt werden sollen. (Weitere Hinweise zu Tagregelgruppen finden Sie in Kapitel 5, "Tagregelgruppen").


Schritt 4. Das XML-Dokument als Formular sichern.

Sichern Sie das XML-Dokument als Formular mit dem Namen "TechNote.xmt". Das Formular enthält die DTD des technischen Dokuments und die Tagregelgruppe, die Sie in Schritt 3 erstellt haben. Sie können das Formular für die Erstellung beliebig vieler XML-Dateien auf demselben Computer oder auf verschiedenen Computern verwenden.


Schritt 5. Öffnen Sie das zu taggende QuarkXPress Passport Dokument.


Schritt 6. Erstellen Sie ein neues XML-Dokument, das auf dem XML-Formular der TechNote basiert.

Um ein neues avenue.quark XML-Dokument zu erstellen, müssen Sie als Erstes ein Formular aus der gleichnamigen Liste auswählen, auf dem das neue XML-Dokument basieren soll. In diesem Beispiel verwenden wir die "TechNote.xmt" aus Schritt 4.

Das Formular TechNote.xmt vereinfacht das Taggen einer QuarkXPress Passport TechNote.


Schritt 7. Taggen auf Regelbasis.

Bei dem auf Regeln basierenden Taggen ziehen Sie den Rahmen mit dem technischen Dokument auf das Element <TechNote> in der Scrollliste XML-Baum, wobei Sie gleichzeitig die Taste COMMAND (Mac OS) bzw. Strg-Taste(Windows) gedrückt halten. Avenue.quark taggt das Dokument automatisch und verwendet dabei die Regeln der Tagregelgruppe.

Ziehen Sie bei dem auf Regeln basierenden Taggen den Rahmen mit der TechNote einfach auf das zugehörige Element in der Scrollliste XML-Baum, wobei Sie gleichzeitig die Taste COMMAND (Mac OS) bzw. Strg (Windows) gedrückt halten. Avenue.quark taggt den Inhalt und verwendet dabei die Regeln der Tagregelgruppe.


Schritt 8. Manuelles Taggen.

Einige der technischen Dokumente sind nach Abschluss des auf Regeln basierenden Taggen fertig. Andere verfügen u. U. über zusätzliche Inhalte, die manuell getaggt werden müssen oder auf andere Weise getaggt werden können. In solchen Situationen ziehen Sie den betreffende Inhalt ganz einfach auf das jeweilige Element in der Palette XML-Arbeitsbereich.


Schritt 9. Strukturierte Inhalte auf dem Web oder anderweitig verwenden.

Wenn der Inhalt des technischen Dokuments XML-formatiert ist, kann er auf verschiedene Weise auf dem Web angeboten werden. Sie können ihn beispielsweise als regulären, d. h. nicht konvertierten XML-Inhalt bereitstellen und mit einem neueren Web-Browser, wie beispielsweise Microsoft Internet Explorer 5.0 ansehen. Im XML-Format getaggter Text kann für unterschiedlichste Zwecke verwendet werden, vom elektronischen Informationsaustausch bis zur Erzeugung gedruckter Dokumente.